package ace.module.tenant.api.model.dto;

import io.swagger.v3.oas.annotations.media.Schema;

import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;
import lombok.experimental.SuperBuilder;

import jakarta.validation.constraints.*;
import jakarta.annotation.Nullable;
import java.io.Serializable;

/**
* 租户 data transform object.
*
* @author Caspar
*/
@Data
@SuperBuilder
@NoArgsConstructor
@AllArgsConstructor
@Schema(title = TenTenantDto.TABLE_DESC)
public class TenTenantDto implements Serializable {

  public static final String TABLE_NAME = "ten_tenant";
  public static final String TABLE_DESC = "租户";
  public static final String ID_COLUMN_NAME = "id";
  public static final String ID_TITLE = "id";
  public static final String ID_DESC = "";
  public static final String OWNER_ACCOUNT_ID_COLUMN_NAME = "owner_account_id";
  public static final String OWNER_ACCOUNT_ID_TITLE = "租户所属账户id";
  public static final String OWNER_ACCOUNT_ID_DESC = "0=null";
  public static final String COMPANY_NAME_COLUMN_NAME = "company_name";
  public static final String COMPANY_NAME_TITLE = "公司名称";
  public static final String COMPANY_NAME_DESC = "";
  public static final String CONTACT_PERSON_COLUMN_NAME = "contact_person";
  public static final String CONTACT_PERSON_TITLE = "联系人";
  public static final String CONTACT_PERSON_DESC = "";
  public static final String CONTACT_WAY_COLUMN_NAME = "contact_way";
  public static final String CONTACT_WAY_TITLE = "联系方式";
  public static final String CONTACT_WAY_DESC = "";
  public static final String REMARK_COLUMN_NAME = "remark";
  public static final String REMARK_TITLE = "备注";
  public static final String REMARK_DESC = "";
  public static final String STATUS_COLUMN_NAME = "status";
  public static final String STATUS_TITLE = "状态";
  public static final String STATUS_DESC = " 1-正常 2-锁定";
  public static final String AUDIT_STATUS_COLUMN_NAME = "audit_status";
  public static final String AUDIT_STATUS_TITLE = "审核状态";
  public static final String AUDIT_STATUS_DESC = " 1-审核中 99-审核失败 100-审核成功";
  public static final String AUDIT_REMARK_COLUMN_NAME = "audit_remark";
  public static final String AUDIT_REMARK_TITLE = "审核备注";
  public static final String AUDIT_REMARK_DESC = "";
  public static final String TYPE_COLUMN_NAME = "type";
  public static final String TYPE_TITLE = "类型";
  public static final String TYPE_DESC = " company-公司 personal-个人";
  public static final String DELETE_FLAG_COLUMN_NAME = "delete_flag";
  public static final String DELETE_FLAG_TITLE = "删除标识";
  public static final String DELETE_FLAG_DESC = "0-未删除";
  public static final String CREATE_TIME_COLUMN_NAME = "create_time";
  public static final String CREATE_TIME_TITLE = "创建时间";
  public static final String CREATE_TIME_DESC = "单位-毫秒";
  public static final String UPDATE_TIME_COLUMN_NAME = "update_time";
  public static final String UPDATE_TIME_TITLE = "更新时间";
  public static final String UPDATE_TIME_DESC = "单位-毫秒";
  public static final String ROW_VERSION_COLUMN_NAME = "row_version";
  public static final String ROW_VERSION_TITLE = "版本号和乐观锁";
  public static final String ROW_VERSION_DESC = "";

  @Schema(title = ID_TITLE, description = ID_DESC)
  private Long id;

  @Schema(title = OWNER_ACCOUNT_ID_TITLE, description = OWNER_ACCOUNT_ID_DESC)
  private Long ownerAccountId;

  @Size(max = 255)
  @Schema(title = COMPANY_NAME_TITLE, description = COMPANY_NAME_DESC)
  private String companyName;

  @Size(max = 255)
  @Schema(title = CONTACT_PERSON_TITLE, description = CONTACT_PERSON_DESC)
  private String contactPerson;

  @Size(max = 255)
  @Schema(title = CONTACT_WAY_TITLE, description = CONTACT_WAY_DESC)
  private String contactWay;

  @Size(max = 255)
  @Schema(title = REMARK_TITLE, description = REMARK_DESC)
  private String remark;

  @Schema(title = STATUS_TITLE, description = STATUS_DESC)
  private Integer status;

  @Schema(title = AUDIT_STATUS_TITLE, description = AUDIT_STATUS_DESC)
  private Integer auditStatus;

  @Size(max = 255)
  @Schema(title = AUDIT_REMARK_TITLE, description = AUDIT_REMARK_DESC)
  private String auditRemark;

  @Size(max = 255)
  @Schema(title = TYPE_TITLE, description = TYPE_DESC)
  private String type;

  @Schema(title = DELETE_FLAG_TITLE, description = DELETE_FLAG_DESC)
  private Long deleteFlag;

  @Schema(title = CREATE_TIME_TITLE, description = CREATE_TIME_DESC)
  private Long createTime;

  @Schema(title = UPDATE_TIME_TITLE, description = UPDATE_TIME_DESC)
  private Long updateTime;

  @Schema(title = ROW_VERSION_TITLE, description = ROW_VERSION_DESC)
  private Long rowVersion;

}